using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._DataManagementTools._Raster._RasterDataset
{
    /// <summary>
    /// <para>Mosaic To New Raster</para>
    /// <para>Merges multiple raster datasets into a new raster dataset.</para>
    /// <para>将多个栅格数据集合并到一个新的栅格数据集中。</para>
    /// </summary>    
    [DisplayName("Mosaic To New Raster")]
    public class MosaicToNewRaster : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public MosaicToNewRaster()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_input_rasters">
        /// <para>Input Rasters</para>
        /// <para>The raster datasets that you want to merge together. The inputs must have the same number of bands and same bit depth.</para>
        /// <para>要合并在一起的栅格数据集。输入必须具有相同的频带数和相同的位深度。</para>
        /// </param>
        /// <param name="_output_location">
        /// <para>Output Location</para>
        /// <para>The folder or geodatabase to store the raster.</para>
        /// <para>用于存储栅格的文件夹或地理数据库。</para>
        /// </param>
        /// <param name="_raster_dataset_name_with_extension">
        /// <para>Raster Dataset Name with Extension</para>
        /// <para><xdoc>
        ///   <para>The name of the dataset you are creating.</para>
        ///   <para>When storing the raster dataset in a file format, you need to specify the file extension:</para>
        ///   <bulletList>
        ///     <bullet_item>.bil—Esri BIL</bullet_item><para/>
        ///     <bullet_item>.bip—Esri BIP</bullet_item><para/>
        ///     <bullet_item>.bmp—BMP</bullet_item><para/>
        ///     <bullet_item>.bsq—Esri BSQ</bullet_item><para/>
        ///     <bullet_item>.dat—ENVI DAT</bullet_item><para/>
        ///     <bullet_item>.gif—GIF</bullet_item><para/>
        ///     <bullet_item>.img—ERDAS IMAGINE</bullet_item><para/>
        ///     <bullet_item>.jpg—JPEG</bullet_item><para/>
        ///     <bullet_item>.jp2—JPEG 2000</bullet_item><para/>
        ///     <bullet_item>.png—PNG</bullet_item><para/>
        ///     <bullet_item>.tif—TIFF</bullet_item><para/>
        ///     <bullet_item>No extension for Esri Grid</bullet_item><para/>
        ///   </bulletList>
        ///   <para>When storing a raster dataset in a geodatabase, do not add a file extension to the name of the raster dataset.</para>
        ///   <para>When storing your raster dataset to a JPEG file, a JPEG 2000 file, a TIFF file, or a geodatabase, you can specify a Compression Type and Compression Quality in the geoprocessing Environments.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>要创建的数据集的名称。</para>
        ///   <para>以文件格式存储栅格数据集时，需要指定文件扩展名：</para>
        ///   <bulletList>
        ///     <bullet_item>.bil - Esri BIL</bullet_item><para/>
        ///     <bullet_item>.bip - Esri BIP</bullet_item><para/>
        ///     <bullet_item>.bmp—BMP</bullet_item><para/>
        ///     <bullet_item>.bsq—Esri BSQ</bullet_item><para/>
        ///     <bullet_item>.dat—ENVI DAT</bullet_item><para/>
        ///     <bullet_item>.gif—GIF</bullet_item><para/>
        ///     <bullet_item>.img—ERDAS 想象</bullet_item><para/>
        ///     <bullet_item>.jpg - JPEG</bullet_item><para/>
        ///     <bullet_item>.jp2 - JPEG 2000</bullet_item><para/>
        ///     <bullet_item>.png—PNG</bullet_item><para/>
        ///     <bullet_item>.tif—TIFF</bullet_item><para/>
        ///     <bullet_item>没有 Esri Grid 的扩展模块</bullet_item><para/>
        ///   </bulletList>
        ///   <para>在地理数据库中存储栅格数据集时，请勿在栅格数据集的名称中添加文件扩展名。</para>
        ///   <para>将栅格数据集存储为 JPEG 文件、JPEG 2000 文件、TIFF 文件或地理数据库时，可以在地理处理环境中指定压缩类型和压缩质量。</para>
        /// </xdoc></para>
        /// </param>
        /// <param name="_number_of_bands">
        /// <para>Number of Bands</para>
        /// <para>The number of bands that the output raster will have.</para>
        /// <para>输出栅格将具有的波段数。</para>
        /// </param>
        public MosaicToNewRaster(List<object> _input_rasters, object _output_location, object _raster_dataset_name_with_extension, long? _number_of_bands)
        {
            this._input_rasters = _input_rasters;
            this._output_location = _output_location;
            this._raster_dataset_name_with_extension = _raster_dataset_name_with_extension;
            this._number_of_bands = _number_of_bands;
        }
        public override string ToolboxName => "Data Management Tools";

        public override string ToolName => "Mosaic To New Raster";

        public override string CallName => "management.MosaicToNewRaster";

        public override List<string> AcceptEnvironments => ["compression", "configKeyword", "extent", "nodata", "parallelProcessingFactor", "pyramid", "rasterStatistics", "resamplingMethod", "tileSize"];

        public override object[] ParameterInfo => [_input_rasters, _output_location, _raster_dataset_name_with_extension, _coordinate_system_for_the_raster, _pixel_type.GetGPValue(), _cellsize, _number_of_bands, _mosaic_method.GetGPValue(), _mosaic_colormap_mode.GetGPValue(), _output_raster_dataset];

        /// <summary>
        /// <para>Input Rasters</para>
        /// <para>The raster datasets that you want to merge together. The inputs must have the same number of bands and same bit depth.</para>
        /// <para>要合并在一起的栅格数据集。输入必须具有相同的频带数和相同的位深度。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Rasters")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public List<object> _input_rasters { get; set; }


        /// <summary>
        /// <para>Output Location</para>
        /// <para>The folder or geodatabase to store the raster.</para>
        /// <para>用于存储栅格的文件夹或地理数据库。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Location")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _output_location { get; set; }


        /// <summary>
        /// <para>Raster Dataset Name with Extension</para>
        /// <para><xdoc>
        ///   <para>The name of the dataset you are creating.</para>
        ///   <para>When storing the raster dataset in a file format, you need to specify the file extension:</para>
        ///   <bulletList>
        ///     <bullet_item>.bil—Esri BIL</bullet_item><para/>
        ///     <bullet_item>.bip—Esri BIP</bullet_item><para/>
        ///     <bullet_item>.bmp—BMP</bullet_item><para/>
        ///     <bullet_item>.bsq—Esri BSQ</bullet_item><para/>
        ///     <bullet_item>.dat—ENVI DAT</bullet_item><para/>
        ///     <bullet_item>.gif—GIF</bullet_item><para/>
        ///     <bullet_item>.img—ERDAS IMAGINE</bullet_item><para/>
        ///     <bullet_item>.jpg—JPEG</bullet_item><para/>
        ///     <bullet_item>.jp2—JPEG 2000</bullet_item><para/>
        ///     <bullet_item>.png—PNG</bullet_item><para/>
        ///     <bullet_item>.tif—TIFF</bullet_item><para/>
        ///     <bullet_item>No extension for Esri Grid</bullet_item><para/>
        ///   </bulletList>
        ///   <para>When storing a raster dataset in a geodatabase, do not add a file extension to the name of the raster dataset.</para>
        ///   <para>When storing your raster dataset to a JPEG file, a JPEG 2000 file, a TIFF file, or a geodatabase, you can specify a Compression Type and Compression Quality in the geoprocessing Environments.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>要创建的数据集的名称。</para>
        ///   <para>以文件格式存储栅格数据集时，需要指定文件扩展名：</para>
        ///   <bulletList>
        ///     <bullet_item>.bil - Esri BIL</bullet_item><para/>
        ///     <bullet_item>.bip - Esri BIP</bullet_item><para/>
        ///     <bullet_item>.bmp—BMP</bullet_item><para/>
        ///     <bullet_item>.bsq—Esri BSQ</bullet_item><para/>
        ///     <bullet_item>.dat—ENVI DAT</bullet_item><para/>
        ///     <bullet_item>.gif—GIF</bullet_item><para/>
        ///     <bullet_item>.img—ERDAS 想象</bullet_item><para/>
        ///     <bullet_item>.jpg - JPEG</bullet_item><para/>
        ///     <bullet_item>.jp2 - JPEG 2000</bullet_item><para/>
        ///     <bullet_item>.png—PNG</bullet_item><para/>
        ///     <bullet_item>.tif—TIFF</bullet_item><para/>
        ///     <bullet_item>没有 Esri Grid 的扩展模块</bullet_item><para/>
        ///   </bulletList>
        ///   <para>在地理数据库中存储栅格数据集时，请勿在栅格数据集的名称中添加文件扩展名。</para>
        ///   <para>将栅格数据集存储为 JPEG 文件、JPEG 2000 文件、TIFF 文件或地理数据库时，可以在地理处理环境中指定压缩类型和压缩质量。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Raster Dataset Name with Extension")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _raster_dataset_name_with_extension { get; set; }


        /// <summary>
        /// <para>Spatial Reference for  Raster</para>
        /// <para>The coordinate system for the output raster dataset.</para>
        /// <para>输出栅格数据集的坐标系。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Spatial Reference for  Raster")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _coordinate_system_for_the_raster { get; set; } = null;


        /// <summary>
        /// <para>Pixel Type</para>
        /// <para><xdoc>
        ///   <para>The bit depth, or radiometric resolution of the mosaic dataset.</para>
        ///   <para>If you do not set the pixel type, the 8-bit default will be used and your output may be incorrect.</para>
        ///   <bulletList>
        ///     <bullet_item>1 bit—A 1-bit unsigned integer. The values can be 0 or 1.</bullet_item><para/>
        ///     <bullet_item>2 bit—A 2-bit unsigned integer. The values supported can be from 0 to 3.</bullet_item><para/>
        ///     <bullet_item>4 bit—A 4-bit unsigned integer. The values supported can be from 0 to 15.</bullet_item><para/>
        ///     <bullet_item>8 bit unsigned—An unsigned 8-bit data type. The values supported can be from 0 to 255.</bullet_item><para/>
        ///     <bullet_item>8 bit signed—A signed 8-bit data type. The values supported can be from -128 to 127.</bullet_item><para/>
        ///     <bullet_item>16 bit unsigned—A 16-bit unsigned data type. The values can range from 0 to 65,535.</bullet_item><para/>
        ///     <bullet_item>16 bit signed—A 16-bit signed data type. The values can range from -32,768 to 32,767.</bullet_item><para/>
        ///     <bullet_item>32 bit unsigned—A 32-bit unsigned data type. The values can range from 0 to 4,294,967,295.</bullet_item><para/>
        ///     <bullet_item>32 bit signed—A 32-bit signed data type. The values can range from -2,147,483,648 to 2,147,483,647.</bullet_item><para/>
        ///     <bullet_item>32 bit float—A 32-bit data type supporting decimals.</bullet_item><para/>
        ///     <bullet_item>64 bit—A 64-bit data type supporting decimals.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>镶嵌数据集的位深度或辐射分辨率。</para>
        ///   <para>如果未设置像素类型，则将使用 8 位默认值，并且您的输出可能不正确。</para>
        ///   <bulletList>
        ///     <bullet_item>1 位 - 1 位无符号整数。这些值可以是 0 或 1。</bullet_item><para/>
        ///     <bullet_item>2 位 - 2 位无符号整数。支持的值可以是 0 到 3。</bullet_item><para/>
        ///     <bullet_item>4 位 - 4 位无符号整数。支持的值可以介于 0 到 15 之间。</bullet_item><para/>
        ///     <bullet_item>8 位无符号 - 无符号的 8 位数据类型。支持的值可以介于 0 到 255 之间。</bullet_item><para/>
        ///     <bullet_item>8 位有符号 - 有符号的 8 位数据类型。支持的值可以介于 -128 到 127 之间。</bullet_item><para/>
        ///     <bullet_item>16 位无符号 - 16 位无符号数据类型。这些值的范围可以从 0 到 65,535。</bullet_item><para/>
        ///     <bullet_item>16 位有符号 - 16 位有符号数据类型。这些值的范围可以从 -32,768 到 32,767。</bullet_item><para/>
        ///     <bullet_item>32 位无符号 - 32 位无符号数据类型。这些值的范围可以从 0 到 4,294,967,295。</bullet_item><para/>
        ///     <bullet_item>32 位有符号 - 32 位有符号数据类型。这些值的范围可以从 -2,147,483,648 到 2,147,483,647。</bullet_item><para/>
        ///     <bullet_item>32 位浮点数 - 支持小数的 32 位数据类型。</bullet_item><para/>
        ///     <bullet_item>64 位 - 支持小数的 64 位数据类型。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Pixel Type")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _pixel_type_value _pixel_type { get; set; } = _pixel_type_value._8_BIT_UNSIGNED;

        public enum _pixel_type_value
        {
            /// <summary>
            /// <para>1 bit</para>
            /// <para>1 bit—A 1-bit unsigned integer. The values can be 0 or 1.</para>
            /// <para>1 位 - 1 位无符号整数。这些值可以是 0 或 1。</para>
            /// </summary>
            [Description("1 bit")]
            [GPEnumValue("1_BIT")]
            _1_BIT,

            /// <summary>
            /// <para>2 bit</para>
            /// <para>2 bit—A 2-bit unsigned integer. The values supported can be from 0 to 3.</para>
            /// <para>2 位 - 2 位无符号整数。支持的值可以是 0 到 3。</para>
            /// </summary>
            [Description("2 bit")]
            [GPEnumValue("2_BIT")]
            _2_BIT,

            /// <summary>
            /// <para>4 bit</para>
            /// <para>4 bit—A 4-bit unsigned integer. The values supported can be from 0 to 15.</para>
            /// <para>4 位 - 4 位无符号整数。支持的值可以介于 0 到 15 之间。</para>
            /// </summary>
            [Description("4 bit")]
            [GPEnumValue("4_BIT")]
            _4_BIT,

            /// <summary>
            /// <para>8 bit unsigned</para>
            /// <para>8 bit unsigned—An unsigned 8-bit data type. The values supported can be from 0 to 255.</para>
            /// <para>8 位无符号 - 无符号的 8 位数据类型。支持的值可以介于 0 到 255 之间。</para>
            /// </summary>
            [Description("8 bit unsigned")]
            [GPEnumValue("8_BIT_UNSIGNED")]
            _8_BIT_UNSIGNED,

            /// <summary>
            /// <para>8 bit signed</para>
            /// <para>8 bit signed—A signed 8-bit data type. The values supported can be from -128 to 127.</para>
            /// <para>8 位有符号 - 有符号的 8 位数据类型。支持的值可以介于 -128 到 127 之间。</para>
            /// </summary>
            [Description("8 bit signed")]
            [GPEnumValue("8_BIT_SIGNED")]
            _8_BIT_SIGNED,

            /// <summary>
            /// <para>16 bit unsigned</para>
            /// <para>16 bit unsigned—A 16-bit unsigned data type. The values can range from 0 to 65,535.</para>
            /// <para>16 位无符号 - 16 位无符号数据类型。这些值的范围可以从 0 到 65,535。</para>
            /// </summary>
            [Description("16 bit unsigned")]
            [GPEnumValue("16_BIT_UNSIGNED")]
            _16_BIT_UNSIGNED,

            /// <summary>
            /// <para>16 bit signed</para>
            /// <para>16 bit signed—A 16-bit signed data type. The values can range from -32,768 to 32,767.</para>
            /// <para>16 位有符号 - 16 位有符号数据类型。这些值的范围可以从 -32,768 到 32,767。</para>
            /// </summary>
            [Description("16 bit signed")]
            [GPEnumValue("16_BIT_SIGNED")]
            _16_BIT_SIGNED,

            /// <summary>
            /// <para>32 bit unsigned</para>
            /// <para>32 bit unsigned—A 32-bit unsigned data type. The values can range from 0 to 4,294,967,295.</para>
            /// <para>32 位无符号 - 32 位无符号数据类型。这些值的范围可以从 0 到 4,294,967,295。</para>
            /// </summary>
            [Description("32 bit unsigned")]
            [GPEnumValue("32_BIT_UNSIGNED")]
            _32_BIT_UNSIGNED,

            /// <summary>
            /// <para>32 bit signed</para>
            /// <para>32 bit signed—A 32-bit signed data type. The values can range from -2,147,483,648 to 2,147,483,647.</para>
            /// <para>32 位有符号 - 32 位有符号数据类型。这些值的范围可以从 -2,147,483,648 到 2,147,483,647。</para>
            /// </summary>
            [Description("32 bit signed")]
            [GPEnumValue("32_BIT_SIGNED")]
            _32_BIT_SIGNED,

            /// <summary>
            /// <para>32 bit float</para>
            /// <para>32 bit float—A 32-bit data type supporting decimals.</para>
            /// <para>32 位浮点数 - 支持小数的 32 位数据类型。</para>
            /// </summary>
            [Description("32 bit float")]
            [GPEnumValue("32_BIT_FLOAT")]
            _32_BIT_FLOAT,

            /// <summary>
            /// <para>64 bit</para>
            /// <para>64 bit—A 64-bit data type supporting decimals.</para>
            /// <para>64 位 - 支持小数的 64 位数据类型。</para>
            /// </summary>
            [Description("64 bit")]
            [GPEnumValue("64_BIT")]
            _64_BIT,

        }

        /// <summary>
        /// <para>Cellsize</para>
        /// <para>The cell size for the new raster dataset.</para>
        /// <para>新栅格数据集的像元大小。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Cellsize")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public double? _cellsize { get; set; } = null;


        /// <summary>
        /// <para>Number of Bands</para>
        /// <para>The number of bands that the output raster will have.</para>
        /// <para>输出栅格将具有的波段数。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Number of Bands")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public long? _number_of_bands { get; set; }


        /// <summary>
        /// <para>Mosaic Operator</para>
        /// <para><xdoc>
        ///   <para>The method used to mosaic overlapping areas.</para>
        ///   <bulletList>
        ///     <bullet_item>First—The output cell value of the overlapping areas will be the value from the first raster dataset mosaicked into that location.</bullet_item><para/>
        ///     <bullet_item>Last—The output cell value of the overlapping areas will be the value from the last raster dataset mosaicked into that location. This is the default.</bullet_item><para/>
        ///     <bullet_item>Blend—The output cell value of the overlapping areas will be a horizontally weighted calculation of the values of the cells in the overlapping area.</bullet_item><para/>
        ///     <bullet_item>Mean—The output cell value of the overlapping areas will be the average value of the overlapping cells.</bullet_item><para/>
        ///     <bullet_item>Minimum—The output cell value of the overlapping areas will be the minimum value of the overlapping cells.</bullet_item><para/>
        ///     <bullet_item>Maximum—The output cell value of the overlapping areas will be the maximum value of the overlapping cells.</bullet_item><para/>
        ///     <bullet_item>Sum—The output cell value of the overlapping areas will be the total sum of the overlapping cells.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>For more information about each mosaic operator, refer to the Mosaic Operator help topic.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>用于马赛克重叠区域的方法。</para>
        ///   <bulletList>
        ///     <bullet_item>首先 - 重叠区域的输出像元值将是镶嵌到该位置的第一个栅格数据集的值。</bullet_item><para/>
        ///     <bullet_item>最后 - 重叠区域的输出像元值将为镶嵌到该位置的最后一个栅格数据集的值。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>混合—重叠区域的输出像元值将是重叠区域中像元值的水平加权计算。</bullet_item><para/>
        ///     <bullet_item>平均值 - 重叠区域的输出像元值将是重叠像元的平均值。</bullet_item><para/>
        ///     <bullet_item>最小值 - 重叠区域的输出像元值将是重叠像元的最小值。</bullet_item><para/>
        ///     <bullet_item>最大值 - 重叠区域的输出像元值将是重叠像元的最大值。</bullet_item><para/>
        ///     <bullet_item>总和—重叠区域的输出像元值将是重叠像元的总和。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>有关每个镶嵌运算符的详细信息，请参阅镶嵌运算符帮助主题。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Mosaic Operator")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _mosaic_method_value _mosaic_method { get; set; } = _mosaic_method_value._LAST;

        public enum _mosaic_method_value
        {
            /// <summary>
            /// <para>First</para>
            /// <para>First—The output cell value of the overlapping areas will be the value from the first raster dataset mosaicked into that location.</para>
            /// <para>首先 - 重叠区域的输出像元值将是镶嵌到该位置的第一个栅格数据集的值。</para>
            /// </summary>
            [Description("First")]
            [GPEnumValue("FIRST")]
            _FIRST,

            /// <summary>
            /// <para>Last</para>
            /// <para>Last—The output cell value of the overlapping areas will be the value from the last raster dataset mosaicked into that location. This is the default.</para>
            /// <para>最后 - 重叠区域的输出像元值将为镶嵌到该位置的最后一个栅格数据集的值。这是默认设置。</para>
            /// </summary>
            [Description("Last")]
            [GPEnumValue("LAST")]
            _LAST,

            /// <summary>
            /// <para>Blend</para>
            /// <para>Blend—The output cell value of the overlapping areas will be a horizontally weighted calculation of the values of the cells in the overlapping area.</para>
            /// <para>混合—重叠区域的输出像元值将是重叠区域中像元值的水平加权计算。</para>
            /// </summary>
            [Description("Blend")]
            [GPEnumValue("BLEND")]
            _BLEND,

            /// <summary>
            /// <para>Mean</para>
            /// <para>Mean—The output cell value of the overlapping areas will be the average value of the overlapping cells.</para>
            /// <para>平均值 - 重叠区域的输出像元值将是重叠像元的平均值。</para>
            /// </summary>
            [Description("Mean")]
            [GPEnumValue("MEAN")]
            _MEAN,

            /// <summary>
            /// <para>Minimum</para>
            /// <para>Minimum—The output cell value of the overlapping areas will be the minimum value of the overlapping cells.</para>
            /// <para>最小值 - 重叠区域的输出像元值将是重叠像元的最小值。</para>
            /// </summary>
            [Description("Minimum")]
            [GPEnumValue("MINIMUM")]
            _MINIMUM,

            /// <summary>
            /// <para>Maximum</para>
            /// <para>Maximum—The output cell value of the overlapping areas will be the maximum value of the overlapping cells.</para>
            /// <para>最大值 - 重叠区域的输出像元值将是重叠像元的最大值。</para>
            /// </summary>
            [Description("Maximum")]
            [GPEnumValue("MAXIMUM")]
            _MAXIMUM,

            /// <summary>
            /// <para>Sum</para>
            /// <para>Sum—The output cell value of the overlapping areas will be the total sum of the overlapping cells.</para>
            /// <para>总和—重叠区域的输出像元值将是重叠像元的总和。</para>
            /// </summary>
            [Description("Sum")]
            [GPEnumValue("SUM")]
            _SUM,

        }

        /// <summary>
        /// <para>Mosaic Colormap Mode</para>
        /// <para><xdoc>
        ///   <para>Applies when the input raster datasets have a colormap.</para>
        ///   <para>Specifies the method that will be used to choose which color map from the input rasters will be applied to the mosaic output.</para>
        ///   <bulletList>
        ///     <bullet_item>First—The color map from the first raster dataset in the list will be applied to the output raster mosaic. This is the default.</bullet_item><para/>
        ///     <bullet_item>Last—The color map from the last raster dataset in the list will be applied to the output raster mosaic.</bullet_item><para/>
        ///     <bullet_item>Match—All the color maps will be considered when mosaicking. If all possible values are already used (for the bit depth), the tool will match the value with the closest available color.</bullet_item><para/>
        ///     <bullet_item>Reject—Only the raster datasets that do not have a color map associated with them will be mosaicked.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>For more information about each colormap mode, see the Mosaic colormap mode help topic.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>当输入栅格数据集具有颜色图时适用。</para>
        ///   <para>指定将用于选择将输入栅格中的哪个颜色映射表应用于镶嵌输出的方法。</para>
        ///   <bulletList>
        ///     <bullet_item>首先 - 列表中第一个栅格数据集中的颜色映射表将应用于输出栅格镶嵌。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>最后 - 列表中最后一个栅格数据集的颜色映射表将应用于输出栅格镶嵌。</bullet_item><para/>
        ///     <bullet_item>匹配 - 镶嵌时将考虑所有颜色映射表。如果已使用所有可能的值（用于位深度），则该工具将使用最接近的可用颜色匹配该值。</bullet_item><para/>
        ///     <bullet_item>拒绝 - 仅镶嵌没有与其关联的颜色映射表的栅格数据集。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>有关每种颜色映射表模式的详细信息，请参阅镶嵌颜色映射表模式帮助主题。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Mosaic Colormap Mode")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _mosaic_colormap_mode_value _mosaic_colormap_mode { get; set; } = _mosaic_colormap_mode_value._FIRST;

        public enum _mosaic_colormap_mode_value
        {
            /// <summary>
            /// <para>Reject</para>
            /// <para>Reject—Only the raster datasets that do not have a color map associated with them will be mosaicked.</para>
            /// <para>拒绝 - 仅镶嵌没有与其关联的颜色映射表的栅格数据集。</para>
            /// </summary>
            [Description("Reject")]
            [GPEnumValue("REJECT")]
            _REJECT,

            /// <summary>
            /// <para>First</para>
            /// <para>First—The color map from the first raster dataset in the list will be applied to the output raster mosaic. This is the default.</para>
            /// <para>首先 - 列表中第一个栅格数据集中的颜色映射表将应用于输出栅格镶嵌。这是默认设置。</para>
            /// </summary>
            [Description("First")]
            [GPEnumValue("FIRST")]
            _FIRST,

            /// <summary>
            /// <para>Last</para>
            /// <para>Last—The color map from the last raster dataset in the list will be applied to the output raster mosaic.</para>
            /// <para>最后 - 列表中最后一个栅格数据集的颜色映射表将应用于输出栅格镶嵌。</para>
            /// </summary>
            [Description("Last")]
            [GPEnumValue("LAST")]
            _LAST,

            /// <summary>
            /// <para>Match</para>
            /// <para>Match—All the color maps will be considered when mosaicking. If all possible values are already used (for the bit depth), the tool will match the value with the closest available color.</para>
            /// <para>匹配 - 镶嵌时将考虑所有颜色映射表。如果已使用所有可能的值（用于位深度），则该工具将使用最接近的可用颜色匹配该值。</para>
            /// </summary>
            [Description("Match")]
            [GPEnumValue("MATCH")]
            _MATCH,

        }

        /// <summary>
        /// <para>Output Raster Dataset</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Raster Dataset")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _output_raster_dataset { get; set; }


        public MosaicToNewRaster SetEnv(object compression = null, object configKeyword = null, object extent = null, object nodata = null, object parallelProcessingFactor = null, object pyramid = null, object rasterStatistics = null, object resamplingMethod = null, double[] tileSize = null)
        {
            base.SetEnv(compression: compression, configKeyword: configKeyword, extent: extent, nodata: nodata, parallelProcessingFactor: parallelProcessingFactor, pyramid: pyramid, rasterStatistics: rasterStatistics, resamplingMethod: resamplingMethod, tileSize: tileSize);
            return this;
        }

    }

}